package semantica;

import java.util.Hashtable;
import semantica.tipos.Tipo;

/**
 *
 * @author Javi
 */
public class TablaDeSimbolos {
       private class ContenidoTablaDeSimbolos{
            private String id;
            private String clase; 
            private Tipo tipo;
            private int dir;
            
            public ContenidoTablaDeSimbolos(String id, String clase, Tipo tipo, int dir){
                this.id = id;
                this.clase = clase; 
                this.tipo = tipo;
                this.dir = dir;
            }
            
			public String getId() {
				return id;
			}
			public void setId(String id) {
				this.id = id;
			}
			public String getClase() {
				return clase;
			}
			public void setClase(String clase) {
				this.clase = clase;
			}
			public Tipo getTipo() {
				return tipo;
			}
			public void setTipo(Tipo tipo) {
				this.tipo = tipo;
			}
			public int getDir() {
				return dir;
			}
			public void setDir(int dir) {
				this.dir = dir;
			}
            
            
        }
        
    private Hashtable <String, ContenidoTablaDeSimbolos> ts;

    
    
    public TablaDeSimbolos(){
        ts = new Hashtable <String, ContenidoTablaDeSimbolos>();
    }
    
    public TablaDeSimbolos(TablaDeSimbolos tabla){
        this.ts = new Hashtable <String, ContenidoTablaDeSimbolos>();
        this.ts = (Hashtable <String, ContenidoTablaDeSimbolos>)tabla.getTs().clone();
    }
    
    public void anadeTS(String id, String clase, Tipo tipo, int dir){
        ts.put(id,new ContenidoTablaDeSimbolos(id, clase, tipo, dir));
        
        
    } 
    
    public Hashtable<String, ContenidoTablaDeSimbolos> getTs() {
        return ts;
    }

    public void setTs(Hashtable<String, ContenidoTablaDeSimbolos> ts) {
        this.ts = ts;
    }
    
    public int getDir(String id){
        if (ts.containsKey(id))
            return ts.get(id).getDir();
        return 0;
    }
    
    public Tipo getTipo(String id){
        if (ts.containsKey(id))
            return ts.get(id).getTipo();
        return new Tipo();
    }
    
    public boolean existeId(String id){
        return ts.containsKey(id);
    }
    
}
